package com.atguigu;

import com.sun.org.apache.xml.internal.utils.Hashtree2Node;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.params.SetParams;

import java.util.HashMap;
import java.util.List;
import java.util.Set;

/**
 * @author 伟哥
 * @date 2021-06-21 11:15
 */
public class Jedis_01HelloWorld {
    // 1、new Jedis
    Jedis jedis = new Jedis("192.168.2.5", 6379);

    /**
     * 01、HelloWorld
     */
    @Test
    public void Test_01HelloWorld() {


        String ping = jedis.ping();
        System.out.println(ping);
    }

    /**
     * 02、常用API演示
     */
    @Test
    public void Test_02API() {
        /**
         * String
         */
        // set
        jedis.set("k1","v1");
        jedis.set("k2","v2");
        jedis.set("k3","v3");

        // append追加
        jedis.append("k3","myredis");

        // get
        System.out.println("get k3：" + jedis.get("k3"));


        // keys *
        System.out.println("keys * ：");
        Set<String> keys = jedis.keys("*");
        for (String key : keys) {
            System.out.println(key);
        }
        System.out.println("keys * 的大小：" + keys.size());

        // exist
        Boolean exists = jedis.exists("k2");
        System.out.println("exist方法" + exists);

        // ttl 存活时间
        Long ttl = jedis.ttl("k1");
        System.out.println("ttl存活时间" + ttl);

        // mset 批量存储值
        String mset = jedis.mset("str1", "value1", "str2", "value2");
        System.out.println("mset批量存储值："+mset);

        // mget 批量获取值
        List<String> mget = jedis.mget("str1", "str2");
        System.out.println("mget批量获取值：");
        for (String s : mget) {
            System.out.println(s);
        }

        /**
         * List 集合
         */
        // lpush存储数据
        jedis.lpush("mylist", "v1", "v2", "v3", "v4", "v5");
        // lrange遍历数据
        List<String> mylist = jedis.lrange("mylist", 0, -1);
        System.out.println("lrange遍历：" + mylist);

        /**
         * Set 【不能重复的List】
         */
        // sadd存储
        jedis.sadd("orders", "jd001");
        jedis.sadd("orders", "jd002","jd003");
        //smembers遍历
        Set<String> orders = jedis.smembers("orders");
        System.out.println("Set遍历：" + orders);
        // srem删除 集合中的元素
        jedis.srem("orders","jd002");


        /**
         * Hash 【类似Java中Map<String,Object>】
         */
        // hset存储单个键值对
        jedis.hset("hash1","username","zhangsan");
        // hget 获取单个字段
        String hget = jedis.hget("hash1", "username");
        System.out.println("获取单个字段：" + hget);
        // hmset批量存储
        HashMap<String, String> stringStringHashMap = new HashMap<>();
        stringStringHashMap.put("telphone","1234567890");
        stringStringHashMap.put("address","atguigu");
        stringStringHashMap.put("email","1234@abc.com");
        jedis.hmset("hash2",stringStringHashMap);

        // hmget批量获取
        System.out.println("hmget批量获取：" + jedis.hmget("hash2","telphone","address"));

        /**
         * Zset
         */
        // zadd
        jedis.zadd("zset01",60d,"v1");
        jedis.zadd("zset01",70d,"v2");
        jedis.zadd("zset01",80d,"v3");
        jedis.zadd("zset01",90d,"v4");
        jedis.zadd("zset01",100d,"v5");

        // zrange
        Set<String> zset01 = jedis.zrange("zset01", 0, -1);
        System.out.println("遍历zset01集合：" + zset01);
    }
}